package gui;

import gestionBDD.*;
import interne.*;

import java.sql.*;
import java.util.*;

import com.trolltech.qt.gui.*;

public class fenetreAlbumPub extends QWidget {
	
	Client client ;
	Album album ;
	QListWidget albumListWidget;
	QTextBrowser detailsTextDocument ;
	Boolean visiteur = false;
	
	/**
	 * Construit la fenêtre pour Consulter les albums publics
	 * @param client
	 * @throws SQLException
	 */
	public fenetreAlbumPub(Client c) throws SQLException {
		
		/* Si le client est loggé ou non */
		if (c == null) {visiteur = true ;}
		else {setClient(c) ;}
		
		albumListWidget = new QListWidget();
        albumListWidget.currentItemChanged.connect(this, "afficherDetails()");

		detailsTextDocument = new QTextBrowser();

		
        /** Login's GroupBox' **/
        QGroupBox albumsGroup = new QGroupBox(tr("Albums publics"));
        QHBoxLayout albumsLayout = new QHBoxLayout();
        

        albumsLayout.addWidget(albumListWidget);
        albumsLayout.addWidget(detailsTextDocument);
        albumsGroup.setLayout(albumsLayout);
        

        QGroupBox actionsGroup = new QGroupBox(tr("Actions"));

        /* Bouton Connexion */
        QPushButton boutonVoirContenu = new QPushButton("Voir Contenu");
        boutonVoirContenu.clicked.connect(this, "voirContenu()");   
        
        /* Bouton Retour */
        QPushButton boutonRetour = new QPushButton("Retour");
        boutonRetour.clicked.connect(this, "retour()");  

        QVBoxLayout actionsLayout = new QVBoxLayout();
        actionsLayout.addWidget(boutonVoirContenu);
        actionsLayout.addWidget(boutonRetour);
        actionsGroup.setLayout(actionsLayout);

     
        QVBoxLayout layout = new QVBoxLayout();
        layout.addWidget(albumsGroup);
        layout.addWidget(actionsGroup);
        setLayout(layout);
        
        /** Création de la liste des albums publics **/
		List<Album> listeAlbum = new ArrayList<Album>(); 
		listeAlbum = extractionBDD.extraireAlbumsPub();
		Iterator<Album> ite = listeAlbum.iterator();
		while (ite.hasNext()) {
		    Album album = ite.next();
		    albumListWidget.addItem(album.getTitreAlbum() + " / " + album.getIdAlbum()) ;
		}
	}
	
	/**
	 * Accède au menu Consultation de l'album
	 * @throws SQLException
	 */
	public void voirContenu() throws SQLException {
		fenetrePhotoPub fenetre = new fenetrePhotoPub(client, album);
		QMainWindow menuPrincipal = (QMainWindow) this.parentWidget() ;
		menuPrincipal.setCentralWidget(fenetre) ;
	}
	
	/**
	 * Affiche les détails de l'album sélectionné dans le volet de droite
	 * @throws SQLException
	 */
	public void afficherDetails() throws SQLException {
		String temp[] = albumListWidget.currentItem().text().split(" / ") ;
		Integer idAlbum = Integer.parseInt(temp[1]) ;
		Album album = new Album(idAlbum) ;
		album = requetesAlbum.trouverAvecIdAlbum(album) ;
		setAlbum(album) ;
		String details = "Titre : \t" + album.getTitreAlbum() + "\n" +
				"Sous-tire : \t" + album.getSousTitre() + "\n" +
				"Partage : \t" + album.getPartage().toString() + "\n" +
				"Auteur : \t" + album.getIdClient();
		if (album.getCouverture() != null && album.getCouverture() != 0) {
			details = details +
					"\nCouverture : " + requetesContient.retourneTitreImage(album.getCouverture()) + "\n" +
					"Préface : " + album.getPreface() + "\n" +
					"Postface : " + album.getPostface() ;
		}
		detailsTextDocument.setText(details) ;
	}
	
	/**
	 * Retour à l'écran précédent
	 * @throws SQLException
	 */
	public void retour() throws SQLException {
		QMainWindow menuPrincipal = (QMainWindow) this.parentWidget() ;
		if (visiteur) {
	        fenetreAccueil fenetre = new fenetreAccueil();
			menuPrincipal.setCentralWidget(fenetre) ;
		}
		else { 
			fenetreClient fenetre = new fenetreClient(client);
			menuPrincipal.setCentralWidget(fenetre) ;
		}
	}
	
	public Client getClient() {
		return client;
	}

	public void setClient(Client client) {
		this.client = client;
	}

	public Album getAlbum() {
		return album;
	}

	public void setAlbum(Album album) {
		this.album = album;
	}

}
